package db0

import (
	"log"
	"time"
)

type BaseDict struct {
	// Description string `json:"description"` , description, detail, remark
	Id      uint   `gorm:"primarykey" json:"id"` // 主键
	Key     string `json:"key" gorm:"index"`
	Value   string `json:"value"`
	Remark  string `json:"remark"`  //说明(描述)
	Created string `json:"created"` // 日期时间(录入的时间)
	Updated string `json:"updated"` // 日期时间(更新的时间)
}

func init() {
	db := Getdb()
	if err := db.AutoMigrate(&BaseDict{}); err != nil {
		println(err)
	}
}

type BaseDictRef struct{}

func (*BaseDictRef) ValueByKey(key string) (res string) {
	db := Getdb()
	var entity BaseDict

	// 【注意】`.Error` 一定不要忘记了
	if err := db.Model(&BaseDict{}).Where("key = ?", key).First(&entity).Error; err == nil {
		res = entity.Value
	}

	return
}

func (*BaseDictRef) Save(key string, value string, remark string) {
	db := Getdb()
	var entity BaseDict
	entity.Key = key
	entity.Value = value
	entity.Remark = remark
	entity.Created = time.Now().Format("2006-01-02 15:04:05")

	// 这里有点坑, 必须传递引用
	if err := db.Create(&entity).Error; err != nil {
		log.Fatal(err)
	}
}
